home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 46 / Amiga Format CD46 (1999-10-20)(Future Publishing)(GB)[!][issue 1999-12].iso / -in_the_mag- / reader_requests / codecs / developer / codecs_library.readme < prev   
Text File  |  1999-09-16  |  5KB  |  131 lines

  1. This is a second beta realease of the codecs.library.
  2.  
  3.  
  4. INTRODUCTION
  5. ============
  6. I created a system for managing compression codecs. Amiga has no such thing,
  7. though there is the excellent XPK system. Codecs are much like XPK sublibraries
  8. but a codec are not stream oriented, they can have knowledge about the data
  9. they compress. For image codecs this is very important. You can not code
  10. an image well if you have no idea about what you are coding. JPEG is a good
  11. example to illustrate this. It maps images from RGB to YUV colorspace and
  12. uses DCT on the image data. To do this it must know some properties of the
  13. image, such a s height and width. The codec 'knows' about the image it
  14. compresses. This is not possible with XPK sublibraries.
  15.  
  16. Therefor, I created another system. It has become the codecs.library, it is a
  17. library just like datatypes.library but manages codecs. And I have created a
  18. first codec: The sp.codec that implements the s+p wavelet compression with
  19. huffman coding.
  20.  
  21. The current software consists of the Codecs.library that has 4 function:
  22. - NewCodec
  23. - DisposeCodec
  24. - Encode
  25. - Decode
  26.  
  27. In this release there is one codec; the sp.codec. This codec will rougly about
  28. halve the size of an image. It codec lossless, e.g. you get exactly back the
  29. image you put in. And therefor it does not compress as well as the lossy JPEG.
  30. Work is in progress to also provide lossy coding for the sp.codec. Then a
  31. slider from 1%-100% will determine how much imagedata will be trown away 1%
  32. meaning a lot, 100% meaning nothing (lossless)
  33.  
  34. All is very BETA at this time, there are thing to fix. But I released this
  35. code to see if (and how) people react to it.
  36. (So keep in mind, this code is SLOW and BUGGY I know!)
  37.  
  38.  
  39. DEVELOPERS
  40. ==========
  41. You can always contact me for questions. If you want to create your own codecs,
  42. contact me! Use this software to experiment only, do not make any release
  43. containing this software, contact me first. Newer versions are not guaranteed
  44. to be compatible.
  45.  
  46. Peek in the source to see how the interface works in detail.
  47. The big picture is:
  48.  
  49. open the codecs lib:
  50.  
  51.         OpenLibrary("codecs.library", 0);
  52.  
  53. now you can create codecs, here is how to create a sp.codec object:
  54.  
  55.         MyCodec =  NewCodec("sp.codec", 0);
  56.  
  57. now it is possible to Encode() / Decode() with the created codec object, (a
  58. TagList is used)
  59.  
  60.         Encode(MyCodec, ...) / Decode(MyCodec, ...)
  61.  
  62. when done, dispose of the codec:
  63.  
  64.         DisposeCodec(MyCodec)
  65.  
  66. when not used anymore, you can close the codecs library
  67.  
  68.         CloseLibrary();
  69.  
  70. Note that you never deal with the codec itself, you always use calls in the
  71. codecs.library.
  72.  
  73. I included a sample application and source to show how the library and
  74. codecs can be used. This release also has some documenation with it.
  75. The IffCompress program used the codecs.library and can be recompiled with
  76. SAS/C v6.58. The lena.ilbm standard test image is included for testing it.
  77.  
  78. usage: IffCompress <src image> <dst image>
  79.  
  80. When src image is byterun1 compressed it will produce a sp.codec compressed
  81. dst-image and vice-versa.
  82. The program used the byterun.codec to perform the byterun en/decoding and
  83. read/writes images with an experimental codec that has far better compression.
  84. Both codecs are lossless.
  85. You will see that the codecs.library has nothing to do with fileformats etc it
  86. just compresses data images and sound. The program compresses the image and
  87. writes the compressed data out 1:1 in a BODY chunk.
  88.  
  89.  
  90. HISTORY
  91. =======
  92. 14-02-1999  v0.1  First public beta release
  93.  
  94. 07-04-1999  v0.2  Second release, added developer docs and a byterun.codec
  95.                   restructured the internals of the codecs.library
  96.  
  97.  
  98. TODO
  99. ====
  100. - Fibonacci (sound), IFF-ANIM, ZLIB and many others these are small simple
  101.   codecs and by increasing the number of available codecs I hope to increase
  102.   its value for developers.
  103. - Add Get/SetCodecAttr() to codecs.library to set parameters for codecs
  104. - Provide SDK for codecs to developers, for now contact me if you want to
  105.   develop your own codec.
  106. - Improve sp.codec to handle more source/destination types.
  107. - Add arithmentic coding to sp.codec and improve coding ration by 10%
  108.   (this is almost done, but I'm not content with the speed yet!)
  109. - Add quantization to sp.codec to implement 'lossy' coding (and beat JPEG!)
  110. - Create good codec for palette images (and beat GIF/PNG with it)
  111.  
  112.  
  113. LEGAL
  114. =====
  115. All provided software is freely usable but copyrighted by me and you use all
  116. this at your own risk.
  117.  
  118.  
  119.  
  120. Example:
  121.         IffCompress lena.ilbm lena.sp
  122.  
  123.     Lena.ilbm  is 243 KB
  124.     Lena.sp    is 156 KB
  125.  
  126. ====================================================================
  127.  
  128. Regards,
  129. Marcel de Wit
  130. marcel@technolution.nl
  131.